/*
 * @Author: 鱿鱼溪学院
 * @Date: 2025-06-15 18:11:09
 * @LastEditTime: 2025-08-02 09:59:49
 * @LastEditors: 鱿鱼溪学院
 * @Description:
 * @FilePath: \yyx-web\src\store\modules\user.ts
 * Copyright 鱿鱼溪学院 by edu v1.0
 * 天道酬勤
 */
//创建用户相关的小仓库
import { loginByPhoneNoCaptcha } from '@/api/login'
import { getUserInfoById } from '@/api/user'
import { setItem } from '@/utils/storage'
import { defineStore } from 'pinia'

// 定义登录接口返回数据的类型
interface AuthData {
  token: string
  msg?: string // 添加可选字段
}

interface LoginResponse {
  code: number
  data: AuthData
}

//创建用户的小仓库
let useUserStore = defineStore('User', {
  //存储数据
  state: () => {
    return {
      isLogin: false,
      token: '',
      userInfo: {},
      cartList: []
    }
  },
  //计算属性
  getters: {},
  //异步|逻辑
  //不能使用箭头函数
  actions: {
    //用户登录逻辑
    // 在调用接口时使用泛型指定返回类型
    /**
     * 用户登录方法
     * @param token 用户登录凭证
     * @returns 登录结果
     */
    async userLogin(token: string): Promise<string> {
      // 验证 token 是否有效
      if (!token || typeof token !== 'string' || token.trim() === '') {
        console.error('无效的token:', token)
        return Promise.reject(new Error('无效的token'))
      }

      try {
        // 设置登录状态和token
        this.token = token
        this.isLogin = true

        // 存储到本地
        setItem('TOKEN', token)
        setItem('ISLOGIN', true)

        console.log('登录成功，token已存储')
        return 'ok'
      } catch (error) {
        console.error('登录过程中发生错误:', error)
        return Promise.reject(new Error('登录失败，请稍后重试'))
      }
    },

    //获取用户信息
    async getUserInfo() {
      let res = await getUserInfoById()

      console.log(res, 'res')
      // if (res.code == 0) {
      //   this.userInfo = res.data
      // } else {
      //   console.log(res.code, '获取用户信息失败')
      // }
      console.log('123')
    }
  }
})

export default useUserStore
